#pragma once
#include "Level.h"
#include "MoveSystem.h"
#include "UndoStack.h"

class Game {
public:
    explicit Game(const Level& level);
    bool move(Direction dir);
    void reset();
    bool undo();
    bool completed() const;
    int stepCount() const;
    const GameState& state() const;
    const Level& level() const;
private:
    Level lvl;
    GameState st;
    UndoStack undoStack;
    int steps = 0;
};